LinuC-1 - 102試験 - 1.08:システム管理 - 1.08.1 アカウント管理

Last Update : August 21 2022 17:47:19

     

a. ユーザーアカウントと/etc/passwd

ユーザーはユーザーアカウントを使ってシステムにログインし、アクセスが許可されているファイルやアプリケーションを使用することができます。
Linuxではスーパーユーザーアカウントと一般ユーザーアカウントという2種類のユーザーアカウントが存在します。

  • スーパーユーザー
    システムの管理者です。通常rootと呼ばれます。一切制限を受けずにシステム内で操作を行うことができます。
  • 一般ユーザー
    システムを利用する側の人のアカウントは一般ユーザーと呼ばれます。 「 root 」という名前以外のアカウント名を持ち、使えるコマンドなどに制限があります。 通常、スーパーユーザーアカウントを持っている人も一般ユーザーアカウントも持っています。スーパーユーザーの操作には制限が全くないので、もしスーパーユーザーアカウントで間違った操作を行うと、最悪、システムを破壊してしまいます。そのため、スーパーユーザーアカウントをもっていても権限が必要のないときには一般ユーザーアカウントで作業を行うのが普通です。
  • システムアカウント
    Linux には、特定のアプリケーション用に存在するアカウントもあります。
    OS稼動中にはいろいろなアプリケーション( apache,DBなどのいろいろなサービス)が内部で動いているわけですが、 これらのアプリケーションは勝手に動いているわけではなく、必ず何らかのアカウントとして動いていることになっています。 この様にシステム内部で特定のアプリケーションを動かす専用のアカウントはシステムアカウントと呼ばれています。 システムアカウントは、ユーザが直接利用することは無いので、ログインできないようにしておく必要があります。

ユーザーアカウント情報は、/etc/passwdファイルで確認する事ができます。
/etc/passwdファイルには、ユーザー名、パスワード、ユーザーID、グループID、コメント(本名とか電話番号とか)ホームディレクトリ、ログインシェルが記録されています。

以前では、/etc/passwdファイルに暗号化されたパスワードが書かれていました。
/etc/passwd ファイルは一般ユーザーでも参照でき、暗号化されたパスワードも見ることができました。また、/etc/passwd ファイルを一般ユーザーが読めないようにしてしまうと、システムにログインできなくなります。
いくら暗号化しているといっても、それを見れるようになっていると解析される可能性があります。
そのため、最近のディストリビューションでは、パスワードの場所に大概「 x 」と記入されています。そして、シャドウパスワードというものが利用されるようになり、暗号化されたパスワードは、/etc/shadow ファイルに書かれています。 ちなみに、root のリードオンリーです。


b. グループアカウントと/etc/group

Linuxには「グループアカウント」という機能があり、複数のアカウントを論理的にまとめて扱う事が可能です。 同一グループのユーザーは、別々のユーザーであっても、そのグループ所有のファイルに対し、同じアクセス権を持つことになります。
また、1つのアカウントが複数のグループに所属する事も可能です。

ユーザーにとっての基本となるグループをプライマリグループ(基本グループ)と呼び、それ以外に参加しているグループをサブグループ(参加グループ)と呼びます。 ファイルやディレクトリを作成した場合にデフォルトで設定される、所有グループはプライマリグループです。
ユーザーのプライマリグループは、/etc/passwdファイルのGIDフィールドで確認します。

グループアカウントの情報は、/etc/groupファイルで確認する事ができます。
グループ名、グループのパスワード、グループID、サブグループとして所属しているアカウントのリストが記録されています。


c. ユーザーアカウントの管理

1.アカウントの作成

まず、アカウントを作成します。アカウント作成コマンドは、useradd です。できるだけ、8文字以内でおさめるようにし、先頭の文字には英小文字、もしくはアンダースコア("_ ")を使用することができます。ユーザーを作成したら今度は、パスワードを作成します。パスワード作成コマンドは、passwd です。Linuxをデフォルトでインストールした場合は、shadow パスワード(パスワード入力中にアスタリスク "*"が表示されない)を使用し、暗号化アルゴリズムにMD5ハッシュが使われています。

● useradd コマンド構文
  useradd ユーザーID

● useradd コマンドオプション
 -d home_dir ホームディレクトリを指定します。通常は/home/アカウント名です。
 -g group ユーザーが所属するプライマリグループ名、もしくはグループIDを指定します。このオプション実行時には予め、groupadd コマンドでグループを作成しておく必要があります。
 -m ホームディレクトリが存在しない場合に、ホームディレクトリを作成します。
 -s shell ユーザーのログインシェルを指定します。ユーザーにシェルを提供しない場合は、/bin/true や /dev/null のように指定します。
 -u uid ユーザーIDを指定します。ユーザーのアカウントは500番以降を指定します。
 -D デフォルトの設定値を表示、修正する。
 -G group ユーザーが所属するプライマリグループ以外のグループ名、もしくはグループIDを指定します。

新しいユーザー sakura を作成する
# useradd sakura # passwd sakura Changing password for user sakura. New password: Retype new password: passwd: all authentication tokens updated successfully.

上記のコマンドを実行すると、/etc/passwd、/etc/shadow、/etc/group、/etc/gshadowに sakura のエントリが追加されています。また、/home 下に sakura のディレクトリ(sakura のホームディレクトリ)が作成されています。


2.アカウントの削除

アカウントを削除するには、userdel コマンドを実行します。また、ホームディレクトリも一緒に削除する場合は、-r オプションをつけます。

● userdel コマンド構文
  userdel [オプション] ユーザーID

● userdel コマンドオプション
 -r ホーム・ディレクトリも同時に削除する

ユーザー sakura を削除。sakura のホームディレクトリも同時に削除
# userdel -r sakura


3.アカウントの編集

アカウントを編集するには、usermod コマンドを実行します。

● usermod コマンド構文
  usermod [オプション] ユーザーID

● usermod コマンドオプション
 -c コメント ログイン・アカウントに対するコメントを変更する
 -d パス ホーム・ディレクトリを変更する。-mを指定すると、以前のホームディレクトリを移動する
 -e 日付 このアカウントの有効期限を指定する。形式はmm/dd/yyで表す
 -f 日数 有効期限を越えた場合、使用不可能になるまでの日数を指定する。-1 にしておくことでこの機能を不能にすることができる
 -l ログイン名 ユーザー・アカウント名を変更する。ただしユーザー・アカウント名のみ変更するだけで、そのほかの情報を変更しない
 -G グループ名 このアカウントが所属するグループを指定する。このとき、カンマで区切ることにより複数指定することができる
 -s パス ログインシェルを変更する。
 -L ユーザーアカウント パスワードをロックして、ユーザーアカウントを一時的に無効化する
 -U ユーザーアカウント パスワードロックを解除する。

ユーザー sakura の所属グループを harugrp に変更する
# usermod -G harugrp sakura


4.パスワードの設定

アカウントの作成後、パスワードは設定されていない状態なのでパスワードを設定します。passwd コマンドに続けて作成したいユーザーのアカウント名を入力します。なお、各ユーザーが個別にパスワードを作成したり、変更したい場合は、一般ユーザーでログインし、passwd と入力します。

● passwd コマンド構文
  passwd ユーザーID

ユーザー sakura のパスワードを変更する
# passwd sakura

パスワードファイルは、/etc/passwd に格納されており、以下のような形式で記述されています。書式は以下の通りです。パスワード部分が x と表示されているのは、実際のパスワードは、/etc/shadow に記述されているためです。インストール時にシャドウパスワードを使うようにした場合は、この部分にはx が記述されています。/etc/passwd は一般ユーザーでも閲覧が可能になっていますが、/etc/shadow は一般ユーザーが閲覧することはできません。


$ cat /etc/passwd | grep sakura
sakura:x:500:500::/home/sakura:/bin/bash

書式:アカウント名:パスワード:ユーザーID:グループID:コメント:ホームディレクトリ:シェル

5./etc/shadow

/etc/shadow は以下の書式に従って記述されています(注:表示の都合上改行してあります)。

# cat /etc/shadow | grep sakura
sakura:$1p722JqTfSV$G5lw8yjX1rX/ex?PfaHKdm1:12417:0:99999:7:::

書式:account:password:last_change:min_days:max_days:
warn_days:inactive_days:expire_days:reserved


 last_change 1970年1月1日から最後にパスワードが変更された日までの日数
 min_days パスワードが変更できるようになるまでの日数
 max_days パスワードを変更しなくてはならなくなる日までの日数
 warn_days パスワードの有効期限をユーザーに警告するまでの日数
 inactive_days パスワードの有効期限が過ぎてから使用不能になるまでの日数
 expire_days 1970年1月1日からアカウントが使用不能になるまでの日数
 reserved 予約領域


6.ユーザーパスワードに有効期限を設定する

chage コマンドは、ユーザのパスワードに対して有効期限を設定します。設定された有効期限を過ぎた後もパスワードの変更を行わなかった場合、猶予期間が過ぎた時点で指定したユーザのアカウントがロックされます。ロックされたアカウントは管理者権限を持ったユーザ「root」でなければ使用可能にすることは出来ません。(猶予期間を指定しない場合、アカウントのロックは行われません。)管理者権限を持っていない一般ユーザは自身のパスワードの有効期限の確認のみ可能です。

● chage コマンド構文
  chage [オプション] ユーザーID

● chage コマンドオプション
 -l パスワードの有効期限に関する情報を表示します
 -m 最低期間 パスワード変更不可能な期間を設定します。最後にパスワードが変更された日付から指定された期間、パスワードを変更できません。
 -M 最大有効期間 パスワードの有効期間を設定します。最後にパスワードが変更された日付から指定された期間、パスワードが有効です
 -d 日付 パスワードの最新更新日を指定された日付に変更します。
 -W 日数 パスワード期限切れの警告を期限切れの何日前から表示するかを設定します。
 -I 日数 パスワードの有効期限が過ぎた後、アカウントロックまでの猶予日数を指定します。
 -E 有効期限 パスワードの有効期限を設定します。指定された日付までパスワードが有効です。


d. グループの管理

1.グループの作成

groupadd コマンドは、新しいグループを作成します。グループ名は/etc/groupファイルに追記されます。管理者ユーザーのみ実行可能です。

● groupadd コマンド構文
  groupadd [オプション] グループ名

● groupadd コマンドオプション
 -g グループID グループIDを10進数で指定します。500未満の番号はシステムで使用しているため指定できません。

グループ「grp01」をグループID「1000」で作成します。
# groupadd -g 1000 grp01


2.グループの削除

groupdel コマンドは、グループを削除します。グループ名は/etc/groupファイルからも削除されます。管理者ユーザーのみ実行可能です。

● groupdel コマンド構文
  groupdel [オプション] グループ名

グループ「grp01」を削除します。
# groupdel grp01


3.グループの設定を変更

groupmod コマンドは、グループの設定を変更します。管理者ユーザーのみ実行可能です。

● groupmod コマンド構文
  groupmod [オプション] グループ名

● groupmod コマンドオプション
 -g グループID 変更するグループIDを10進数で指定します。500未満の番号はシステムで使用しているため指定できません。
 -n グループ名 グループ名を変更する場合は新しいグループ名を指定します。

グループ「grp01」のグループIDを「2000」に変更します。
# groupmod -g 2000 grp01


e. シャドウパスワード

シャドウパスワードとは、パスワードのデータをユーザーが見られないようにする仕組みのことです。通常、パスワードは/etc/passwdというファイルに暗号化して記録されます。この/etc/passwdはどんなユーザーでも見ることができるので、セキュリティ上好ましくありません。

これに対してシャドウパスワードは、root権限でしか参照できない/etc/shadowというファイルにパスワードが記録され、/etc/passwdのパスワード暗号部分は、「x」という文字に置き換えられます。
/etc/shadowの パーミッションは400(r--------)なので、一般ユーザーが パスワードを見ることはできません。rootでも直接書き換えることはできません。
現在のほとんどのディストリビューションでは、インストール時にデフォルトでシャドウパスワードを使う設定になっていますが、万一シャドウパスワードになっていないなら、シャドウパスワード化します。

シャドウパスワードになっているかどうかは、/etc/passwdを開いてみると分かります。シャドウパスワードになっていないときには、以下のようにユーザーアカウントの次に、意味不明な文字の羅列があります。


通常時の/etc/passwd(抜粋)
sakura:$1$Va/j/4zG$LmZf/P7bj2wwaHugF0xyz1:502:503::/home/sakura:/bin/bash

シャドウパスワードになっている場合は、以下のように「x」とあるだけです。

シャドウパスワード時の/etc/passwd(抜粋)
sakura:x:502:503::/home/sakura:/bin/bash

シャドウパスワードになっていないときは、root権限で pwconv というコマンドを使って、シャドウパスワードに変換します。

# pwconv

シャドウパスワードをやめるときは、pwunconv コマンドを使用します。

# pwunconv


f. データベースファイルから検索

getent コマンドを使うと、各種データベースファイルから一覧を表示することができます。

● getent コマンド構文
  getent データベース [キー]


利用できるデータベース
  • ahosts
  • ahostsv4
  • ahostsv6
  • aliases
  • ethers
  • group
  • gshadow
  • hosts
  • initgroups
  • netgroup
  • networks
  • passwd
  • protocols
  • rpc
  • services
  • shadow

ユーザーの一覧を表示する
# getent passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt ・・・ sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin dovenull:x:496:492:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin

rootユーザーを表示する
# getent passwd root root:x:0:0:root:/root:/bin/bash



g. ホームディレクトリのデフォルトファイル

ユーザーアカウントを作成すると、通常、そのユーザー専用に使えるホームディレクトリも同時に作成されます。 そのホームディレクトリの作成時に、基本的な設定ファイルなど、全員がよく使用するファイルを同時に配布したい場合は、/etc/skelディレクトリ(スケルトンディレクトリ)にそれらのファイルを置いておきます。
ホームディレクトリが作成される際には、/etc/skelディレクトリ内のファイルがホームディレクトリ内にコピーされます。(ファイルの所有者は新規に作成されたユーザーに変更されます)

/etc/skelの例
# ls -al /etc/skel 合計 44 drwxr-xr-x 3 root root 4096 3月 29 11:07 . drwxr-xr-x 100 root root 12288 5月 15 04:02 .. -rw-r--r-- 1 root root 33 7月 22 2011 .bash_logout -rw-r--r-- 1 root root 176 7月 22 2011 .bash_profile -rw-r--r-- 1 root root 124 7月 22 2011 .bashrc drwxr-xr-x 4 root root 4096 3月 8 23:38 .mozilla

スケルトンディレクトリ(/etc/skel)に格納されているファイルをスケルトンファイルと呼びます。通常スケルトンファイルは隠しファイルのため一覧表示したい場合はls -Aと入力する必要があります。
デフォルトでは.bash_logout、.bashrc、.profileのようなファイルが格納されています。

 ファイル名 説明
 .bash_logout ログアウト時に読み込まれる設定が記述されたファイル
 .bashrc シェル起動時に毎回設定したい内容を記述するファイル。 エイリアスやシェル関数が設定される。
 .profile ログインして~/.bash_profile ・ ~/.bash_loginが存在しない場合にのみ読み込まれる設定ファイル


z. 出題範囲概要

概要 :
  • ユーザアカウントの追加、削除、一時停止、変更ができる。

詳細 :
  • ユーザおよびグループを追加、変更、削除する。
    useradd, userdel, usermod
    groupadd, groupdel, groupmod
    /etc/default/useradd
  • 新しいユーザアカウント用のスケルトンディレクトリを保守する。
    /etc/skel/
  • パスワード/グループデータベースにあるユーザ/グループ情報を管理する。これには複数グループの所属も含む。
    passwd, /etc/passwd, /etc/shadow, /etc/group
    getent, id

  [ 例題 ] 


         

    www.it-shikaku.jp